// 引入路由配置
import router from './router'
// 引入vuex，因为要获取token
import store from './store'

import NProgress from 'nprogress' // 引入进度条
import 'nprogress/nprogress.css'

// 白名单：不需要token就能访问的页面
const whiteList = ['/login']
// 全局的前置路由守卫
// to:要去那个页面
// from:从哪里来
// next:是一个函数直接放行next()跳转其他页next(其他页)
router.beforeEach(async(to, from, next) => {
  NProgress.start()// 启动进度条
  // 获取token
  console.log('全局前置路由守卫，获取token', store.getters.token)

  // 有token，已经登陆了
  if (store.getters.token) {
    // 如果要去login页，直接跳转主页
    if (to.path === '/login') {
      console.log('已经登陆，不能访问login')
      next('/')
    } else {
      // 有token要去的不是login，就直接放行
      await store.dispatch('user/getUserInfo')
      next()
    }
  } else {
    //   没有token，要去的页面在白名单中放行
    // includes用来判断元素是否存在数组中
    if (whiteList.includes(to.path)) {
      next()
    } else {
      console.log('没有token就不能访问白名单之外的页面')
      next('/login')
    }
  }
})
router.afterEach(() => {
  // 结束进度条
  NProgress.done()
})

